←
▼
▲
Sub RegEnumValues( Path as string, out_Values as array of RegValueName )
指定のレジストリ・キーに入っている値を列挙します。
【引数】
Path
out_Values
レジストリのキーのパス
(出力) 値と型名の配列
ファイル:
System.vbs
Class RegValueName
Public Name as string
Public Type_ as string
End Class
Dim values
RegEnumValues "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\" + _
"CurrentVersion\Setup", values '// Set "values"
サンプル:
(src)
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定した
ことになります。
テスト
→ T_Reg.vbs
T_Reg1
←
▼
▲
Sub RegExists( RegPath as string )
指定のレジストリ・キーか値が存在するかどうかを判定します。
【引数】
RegPath
レジストリのキーのパス
ファイル:
System.vbs
If RegExists( "HKEY_CURRENT_USER\Software\_Test\" ) Then Fail
サンプル:
Path の末尾が \ のときは、キーがあるかどうかを判定します。
Path の末尾が \ ではないときは、値があるかどうかを判定します。
(src)
←
▼
▲
Sub IsRegEmptyKey( RegPath as string )
指定のレジストリ キーに、値もサブのキーもないかどうかを返します。
指定のレジストリ キーがないときは、False を返します。
→ vbslib.vbs
ソース
テスト
→ T_Reg.vbs
T_Reg1
←
▼
▲
Function RegRead( Path as string ) as variant
との違いは、キーが見つからないときにエラーになるのではなく、
Empty を返すところです。
レジストリからリードします。
【引数】
返り値
値、または Empty
リードする場所。 キーへのパス+値の名前
Path
(src)
Path の最後に \ があると、キーの (規定) をリードします。
関連
←
▼
▲
(src)
Function RegReadEx( Path as string, RegistryType as integer ) as variant
レジストリからリードします。 32/64 ビット用レジストリ対応。
【引数】
RegistryType
64=64ビット用レジストリ、32=32ビット用レジストリ
リードする場所。 キーへのパス+値の名前
Path
値、または Empty
返り値
echo RegReadEx( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+_
"doxygen_is1\InstallLocation", 64 )
サンプル
←
▼
▲
Sub RegExport( RegPath as string, OutFilePath as string, Opt as variant )
指定のレジストリ・キーに入っている値を .reg ファイルに出力します。
【引数】
RegPath
OutFilePath
レジストリのキーのパス
出力ファイルパス
ファイル:
System.vbs
Opt
オプション。 Empty か F_SubFolder
RegExport "HKEY_CURRENT_USER\Control Panel\Keyboard", _
"keyboard.reg", F_SubFolder
サンプル:
(src)
テスト
→ T_Reg.vbs # T_RegExport
対応しているキーの型は、REG_SZ のみです。
←
▼
▲
Sub RegWrite( Path as string, Value as string or integer, Type as string or Empty )
レジストリにライトします。
【引数】
Value
Type
値、または Empty(=値を消す)
値のタイプ, "REG_SZ", "REG_DWORD" など、または Empty(*1)
ライトする場所。 キーへのパス+値の名前
Path
Path によっては管理者権限が必要です
サンプル:
RegWrite "HKEY_CLASSES_ROOT\.ext\", "ExtSample", Empty
(src)
ファイル:
System.vbs
との違いは、エラーメッセージの内容です。
Path の最後に \ があると、キーの (規定) に設定します。
(*1) Type = Empty のときは、 Value の型によって自動的に型を判定します。
←
▼
▲
Sub RegDelete( Path as string )
レジストリの値、またはキーを削除します。
Path の末尾が "\" のときは、キー(フォルダーのようなもの)を削除します。
サブ・キーや値があるときでも、削除できます。
値の名前に "\" を含むときは、
ただし、RegDelete でキーを削除するときは、そのキー(またはサブ・キー)が
持つ値の名前に "\" を含んでいても正しく処理します。
RegDelete "HKEY_CLASSES_ROOT\.svg\"
サンプル:
(src)
を使ってください。
→ T_Reg_Manually.vbs # T_FileAssocOpen
最後の T_FileAssocProg2.exe アンインストールで、値の名前に "\" を含む
値を持つキーを削除しています。
テスト
→ T_Reg_Manually.vbs # T_RegWriteRead
→ T_Reg.vbs
T_Reg1
←
▼
▲
レジストリファイル(*.reg)を編集します。
Dim f : Set f = OpenForRegFile( "Sample.reg" )
If IsEmpty( f.RegRead( "HKEY_CLASSES_ROOT\.ext\" ) ) Then _
f.RegWrite "HKEY_CLASSES_ROOT\.ext\", "ExtSample", "REG_SZ"
f = Empty '// Write
Function OpenForRegFile( RegFilePath as string ) as EditRegFile
【引数】
RegFilePath
返り値
レジストリファイルのパス
EditRegFile オブジェクト
サンプル:
ランダムアクセスに対応しています。 OpenForRead や OpenForWrite のように
シーケンシャル(ファイルの先頭から順番)にアクセスする必要はありませんし、
変更しないキーまで Write する必要はありません。
存在しないキーを新規に Write したときは、シーケンシャル(RegWriteした順番)
にファイルに記述されます。 Empty の値を Write すると、そのキーは削除されます。
元々書かれていたコメントは保持されます。
テスト
→ T_Reg.vbs # T_RegFile
(src)
関連
Sample.reg
HKEY_CLASSES_ROOT\.ext\
ExtSample
←
▼
▲
レジストリファイル(*.reg)を編集します。 OpenForRegFile から取得できます。
メソッド
レジストリファイルからリードします。
レジストリファイルにライトします。
レジストリファイルを閉じます。 アクセスを終了します。
(src)
←
▼
▲
レジストリファイルを閉じます。 アクセスを終了します。
Sub EditRegFile::Close()
デストラクタによっても自動的にファイルを閉じます。
閉じる前にエラーが発生してデストラクタが呼ばれたら、Write した内容は反映されません。
(src)
←
▼
▲
Sub InstallRegistryFileOpen( Extension as string, ExePath as string, IsDefault as boolean )
ファイルをダブルクリックしたときに開くプログラムを設定します。(現在のユーザーのみ)
【引数】
Extension
ExePath
拡張子
プログラムの exe ファイルのパス。相対パス可。
IsDefault
True = ダブルクリックしたときに開く、 False = プログラムの選択に登録する
ファイル:
System.vbs
(src)
サンプル:
InstallRegistryFileOpen ".svg", "Snap Note.exe", True
関連
ファイルの右クリック・メニュー
ダブルクリックしたときの設定解除
テスト
→ T_Reg_Manually.vbs # [T_FileAssocOpen]
参考
→ ファイルをダブルクリックしたときのコマンド
コマンドラインを指定して開くプログラムを設定する
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\
FileExts\.<拡張子>\UserChoice\Hash
下記 Hash キーがあるときは、レジストリーの設定を直接設定しただけでは、「この種類の
ファイル (.<拡張子>)を開くには、どのアプリを使いますか?」が常に表示されるようになります。
セキュリティーの機能の可能性があります。 少なくとも、マクロソフト製品が使う拡張子は、
Hash キーができます。
Windows8 では、関連する設定に矛盾があると、「この種類のファイル (.<拡張子>)
を開くには、どのアプリを使いますか?」が常に表示されます。
→ 既定のプログラムの選択、プログラムから開く
マクロソフト製品(または、Windows インストーラーでインストールしたプログラム?)が使わない
拡張子には Hash キーができず、レジストリーの設定だけで関連付けすることができます。
などで、レジストリーの設定を元に戻してから、ファイルを右クリック [ プログラムから開く >
既定のプログラムの選択 ] を選んでください。
ダブルクリックしたときに開くプログラムを変更できるように戻すには、
←
▼
▲
Sub UninstallRegistryFileOpen( Extension as string, ExePath as string )
ファイルをダブルクリックしたときに開くプログラムを設定解除します。(現在のユーザーのみ)
【引数】
Extension
ExePath
拡張子
プログラムの exe ファイルのパス。相対パス可。
ファイル:
System.vbs
(src)
サンプル:
UninstallRegistryFileOpen ".svg", "Snap Note.exe"
関連
ダブルクリックしたときの設定
テスト
→ T_Reg_Manually.vbs # [T_FileAssocOpen]
←
▼
▲
Sub InstallRegistryFileOpenCommand( Extension as string,
ProgID as string, CommandLine as string, IsDefault as boolean )
ファイルをダブルクリックしたときに開くプログラムを設定します。(現在のユーザーのみ)
【引数】
Extension
ProgID
拡張子
プログラムの識別子
IsDefault
True = ダブルクリックしたときに開く、 False = プログラムの選択に登録する
ファイル:
System.vbs
InstallRegistryFileOpenCommand ".svg", "Snap Note.exe", """Snap Note.exe"" ""%1""", True
関連
テスト
参考
→ ファイルをダブルクリックしたときのコマンド
コマンドライン
CommandLine
(src)
→ T_Reg_Manually.vbs # T_FileAssocOpen_OS_Exe
サンプル
サンプル
prompt_vbs = SearchParent( "vbslib Prompt.vbs" )
command_line = """%windir%\System32\cmd.exe"" /K (""%windir%\System32\cscript.exe"" //nologo """+_
prompt_vbs +""" TranslateTest ""%1"" """")"
InstallRegistryFileOpenCommand "trans", "TranslateTest", command_line, True
←
▼
▲
Sub UninstallRegistryFileOpenCommand( Extension as string, ProgID as string )
ファイルをダブルクリックしたときに開くプログラムを設定解除します。(現在のユーザーのみ)
【引数】
Extension
ProgID
拡張子
プログラムの識別子
ファイル:
System.vbs
サンプル:
UninstallRegistryFileOpenCommand ".svg", "Snap Note.exe"
関連
テスト
→ T_Reg_Manually.vbs # T_FileAssocOpen_OS_Exe
←
▼
▲
Sub RegWriteOpenExt( Ext, KeyName, Explain, Command, Opt )
指定の拡張子の [開く(&O)] メニューのコマンドを登録します。
管理者権限が必要です
【引数】
KeyName
Explain
レジストリのキーの名前(英語)
タイプの説明に表示される内容
Command
実行するコマンドライン
Opt
通常 Empty
拡張子。先頭はピリオド。例:.ext
Ext
(src)
ファイル:
System.vbs
今まで関連付けられていた情報は失われます。
サンプル:
RegWriteOpenExt ".c", "cfile", "C Language source", _
"C:\Windows\Notepad.exe ""%1""", Empty
.c ファイルをメモ帳で開くようにします。
廃止されました。 代わりは……
→ InstallRegistryOfFileOpen
←
▼
▲
Sub InstallRegistryFileVerb( ProgID as string, Verb as string, Caption as string,
CommandLine as string )
ファイルの右クリック・メニューの1つの項目を追加します。(現在のユーザーのみ)
【引数】
ProgID
Verb
"*"、または RegReadExtProgID の返り値 (*1)
メニュー項目の識別子(英語)
Caption
右クリック・メニューに表示する文字列。(*2)
ファイル:
System.vbs
(src)
(*2)
& の次の文字は、右クリック・メニューを表示している状態で押すと選択できるキーボード
のキーになります。
CommandLine
コマンドライン。 %1 は、ファイルのパスに置き換わります。
(*1)
で、拡張子と現在関連付けられている ProgID を取得できます。
サンプル:
InstallRegistryFileVerb RegReadExtProgID( "svg" ), "edit", "Snap Note (&Z)", _
""""+ GetFullPath( "Snap Note.exe", Empty ) +""" ""%1"""
関連
右クリック・メニューの削除
ダブルクリックしたときの設定
拡張子と関連付けられている ProgID の取得
テスト
→ T_Reg_Manually.vbs # [T_FileAssocVerb]
参考
→ 右クリックして表示されるメニュー (特定の拡張子のファイル)
フォルダーに対する設定をするときは、ProgID="Folder" を指定してください。
すべてのファイルやフォルダーに対する設定をするときは、ProgID="*" を指定してください。
←
▼
▲
Sub UninstallRegistryFileVerb( ProgID as string, Verb as string )
ファイルの右クリック・メニューの1つの項目を削除します。(現在のユーザーのみ)
(src)
【引数】
ProgID
Verb
"*"、または RegReadExtProgID の返り値 (*1)
メニュー項目の識別子(英語)
ファイル:
System.vbs
(*1)
で、拡張子と現在関連付けられている ProgID を取得できます。
サンプル:
InstallRegistryFileVerb RegReadExtProgID( "svg" ), "edit"
関連
右クリック・メニューの追加
←
▼
▲
Sub RegWriteAsterExt( KeyName, Caption, Command, Opt )
すべてのファイルに対するコンテキストメニューを追加登録します。
管理者権限が必要です
【引数】
KeyName
Caption
レジストリのキーの名前(英語)
コンテキストメニューに表示される内容
Command
実行するコマンドライン
Opt
通常 Empty
(src)
ファイル:
System.vbs
サンプル:
'--- start of parameters for vbslib include -------------------------------
g_admin = 1
:
'--- end of parameters for vbslib include ---------------------------------
Sub main()
Dim prog : prog = GetFullPath( "bz", Empty )
RegWriteAsterExt "bz", "bz (binary editor)", prog + "\bz.exe ""%1""", Empty
End Sub
廃止されました。 代わりは……
←
▼
▲
Function RegReadExtProgID( Extension as string ) as string
拡張子と現在関連付けられている ProgID を取得します。(現在のユーザー)
(src)
関連
右クリック・メニューの追加
フォルダーに対応する ProgID は、"Folder" です。
←
▼
▲
(src)
Sub MsiModify( MsiPath as string, TableName as string,
KeyColumnName as string, ValueColumnNum as integer,
Key as string, NewValue as string )
Windows 用のインストール・パッケージ(.msi)のデータベースを修正します。
【引数】
MsiPath
TableName
インストール・パッケージ(.msi)のファイルのパス
データベースのテーブル名
KeyColumnName
キーがある列の名前
NewValue
Key
ValueColumnNum
値がある列の番号(最初=1)
キーの名前
新しい値
→ Orca ツール、msi ファイルのデータベースの修正
参考
サンプル
Sub Main( Opt, AppKey )
Dim msi_path : msi_path = "sample.msi"
Dim new_values : Set new_values = Dict(Array( "Utilities", "INSTALLDIR" ))
Dim key
For Each key In new_values.Keys
MsiModify msi_path, "Directory", "Directory", 2, key, new_values.Item( key )
Next
End Sub
←
▼
▲
Function get_WMI( ComputerName as string, ClassName as string ) as Object
WMI オブジェクトを返します。
【引数】
ComputerName
ClassName
コンピューター名。 Empty = ログオンしているコンピューター
WMI のクラス名
返り値
エラーコード、正常=0
参考
(src)
←
▼
▲
Function GetPythonInstallPath() as string
Python がインストールされているフォルダーのパスを返します。
レジストリーの情報と、
の設定を元にしています。
ソース
→ vbslib.vbs
サンプル
python_exe = GetPythonInstallPath() +"\python.exe"
script_path = "C:\sample.py"
RunProg """"+ python_exe +""" """+ script_path +"""", ""
←
▼
▲
Sub SetTargetPythonVersion( MinVer as integer, MaxVer as integer )
Python に関する機能の対象となるバージョンの範囲を設定します。
【引数】
MinVer
MaxVer
最小バージョン、または、Empty
最大バージョン、または、Empty
や
の動きが
本関数を呼び出すと、
変わります。
ソース
→ vbslib.vbs
←
▼
▲
Function IsInstallPython() as boolean
Python がインストールされているかどうかを返します。
ソース
→ vbslib.vbs
←
▼
▲
Function GetPerlVersion( Options as Empty ) as string
Perl がインストールされているか確認し、ActivePerl のバージョンを返します。
【引数】
Options
返り値
Empty を指定してください
スクリプト・エンジン名と、バージョン番号。 例:"5.16.3"
<ERROR err_number='0x80070002' err_description='Perl が見つからないか Perl に Path
が通っていません。Strawberry Perl や ActivePerl などをインストールしてください。'/>
Perl がインストールされていないと、下記のようなエラーになります。
サンプル
Perl が使えるかどうかをチェックする
GetPerlVersion Empty
ソース
→ vbslib.vbs
参考
内部で
によって Perl スクリプトのホスト(.exe) のパスを検索します。
また、本関数の内部で、現在実行中のプロセスの環境変数 PATH に、Perl の exe ファイルがある
フォルダーを追加します。
→ ActivePerl
→ Strawberry Perl